The invention relates generally to broadcast file systems, such as those used on cable television networks but which may also be used in satellite, IPTV, wireless and mobile networks).
A “set top box” refers to any type customer device or customer premise equipment used to tune and decode television signals transmitted over cable television and satellite networks, but may also mean devices for IPTV, wireless, and Mobile networks. A set top box may be implemented in any number of ways. For example, it may take the form of a discrete component or set of components, contained within its own case, or integrated with other components into a single device, such as a television set or mobile phone. All of its components may be mounted on one or more discrete circuit boards or on circuit boards shared with other components. Components may also be shared.
Referring to FIG. 1 which is a simplified, high-level, functional schematic diagram of a set top box 10, control functions of the set top box are implanted by software executing on an embedded processor 14 and stored in some type of memory 12. The memory can be volatile or non-volatile, and may include read only memory in addition to random access memory. The set top box also includes additional hardware, such as interface hardware 16 for receiving signals from a broadcast network, decoding the signal, and transmitting a video signal to a television set or other video output device. Typically, the embedded processor and memory have limited capabilities—just enough to run the necessary control software.
However, each newer generation of set top boxes possesses increased processing power and memory. Many are now capable of running additional applications for purposes of providing enhanced services to subscribers. Such set top boxes are loaded with operating systems to support the additional application software. They have evolved to resemble, at least in some, general purpose computing devices, albeit ones having limited processing and memory resources as compared to modern personal computers.
Nevertheless, memory resources typically remain limited for economic reasons. Set top boxes typically cannot store all the applications and data. Rather, it must be downloaded from a remote server on demand. When a user attempts to access or use an application, or request certain enhanced or additional services, the operating system downloads the application from a remote location, such as the head end in cable television network.
Referring to FIG. 2, certain cable, satellite, IPTV, wireless or mobile systems may employ a broadcast file system (BFS). Unlike a conventional computer network file system, a BFS transmits one file or file segment at a time on one or more channels to all of the set top boxes on a wired or wireless network or segment of a network. Therefore, a device with an embedded processor, such as a set top boxes on cable broadcast networks, do not request a BFS file. Rather, the device waits until the BFS file is broadcast and then store it in memory as it is being broadcast. When a BFS file is required, the device must wait for the file to be broadcast on the network.
In a typical BFS, files 20 are broadcast by a BFS server 22 over a network 24, such as a cable television network, on one or more channels to set top boxes 26. The files are transmitted in a cyclical fashion, using what is referred to as a data carousel. Generally, all files are transmitted at least once during a cycle, though it is possible for a file to be transmitted multiple times within one cycle.
To make more efficient use of the bandwidth, files are segmented before transmission. This is illustrated by the six example files of FIG. 3. Each of the six files is a different size and thus consist of different number of files segments. FIG. 4 illustrates an example of how these six files might be transmitted over the BFS in twenty-three segments. To broadcast the 6 files, each cycle would have at least 23 frames or time units, one for each of the 23 segments. The files segments are typically interleaved. An example of this scenario is illustrated by FIG. 5. Reading File 3, which has 5 segments, will take an entire cycle if reading begins during transmission of the first segment, which is labeled 3.1. In this example, segments 3.2 to 3.5 will be read before segment 3.1 is read, meaning the entire cycle of the data carousel will be transmitted before reading of file 3 is completed.
To the operating system of a set top box, an application may be associated with a single file. Therefore, when an application is requested by an action of a user, the operating system determines that the file containing the code module is available on the data carousel and begins “listening” for it. After completing the reading of all segments of a file, the operating system will “launch” it, causing the code in the downloaded file to begin to execute.
However, a typical application includes not only code, but also data, which is stored in one or more other files. Furthermore, an application may require additional files containing code libraries to run. Code libraries contain program code that may be shared with other application programs. Having application files use the same library files, rather than simply copying them into each application file, reduces cycle times of a data carousel.
Once an application loads, it requests the operating system to download any additional resource files, for example, data and/or code libraries—it requires. The application therefore must typically wait an additional carousel cycle for each resource file to be read before it is ready to present an interface to the user. As it is not uncommon for a BFS on a cable television network to require 20-40 seconds to complete a cycle, the delay in starting an application can irritate a user. The standard solution to reassuring a user that something has not gone wrong is for the set top box or application to display a message such as “Please wait while the application loads” on the screen.